Application servers constitute a fast-growing and important field in the computing industry. As web applications and other distributed applications have evolved into large-scale applications that demand more sophisticated computing services, specialized application servers have been developed to provide a platform supporting these large-scale applications. Applications that run on application servers are generally constructed according to an N-tier architecture, in which, for example, presentation, business logic, and data access layers are kept separate.
The application server space is sometimes referred to as “middleware”, since application servers are often responsible for deploying and running the business logic layer and for integrating, and interacting with, various enterprise-wide resources, such as web servers, databases, and backend or legacy systems. Middleware typically comprises connectivity software that includes a set of enabling services that allow multiple processes running on one or more machines to interact with each other. The middleware functions as a programming abstraction and infrastructure for integration. Middleware services include sets of distributed software that exist between the application, the operating system, and network services on a system node in the network, including, for example, remote procedure calls, message oriented middleware, and object request brokers.
Application servers typically provide application services for tasks that are commonly needed by, for example, web applications and other networked applications. Application servers often incorporate these services and components into an integrated platform specialized for creating web applications. The platform may leverage various standard software component models, such as the Common Object Request Broker Architecture (CORBA), the (Distributed) Component Object Model (COM/DCOM), Enterprise JavaBeans (EJB), etc., or the platform may provide its own software component model or may extend standard component models.
In the middleware/application server stack, there are numerous products, components, and objects that need to be configured to work with one another. For example, within the context of an application server, applications and services must be associated with units of a topology that provide a runtime environment for execution. Such applications include runnable units of functionally related code and services including instances of well known interfaces exposed by standard subsystems, such as JDBC (Java Database Connectivity) and JMS (Java Message Service). A server, e.g., an instance of a specialized Java Virtual Machine, or a cluster, e.g., a set of cooperating servers, are examples of topology units.
The association between applications, services, and topology units is normally achieved by point to point targeting of a given application or service to a topology unit, by targeting a specific application or service to a specific named server. Conventionally, this process is very labor intensive and must be performed manually for each configuration, or by using generic scripts that must also be manually customized to address the specific configuration issues. Given the complexity of modern configurations, these conventional approaches are typically very lengthy and prone to errors. These problems are further amplified by modern environments that often require multiple components to be configured separately, which must nonetheless share applications and other resources.
Therefore, there is a need for an improved approach to configure the associations between applications, services, and topology units. Embodiments of the present invention provide an approach that uses a declarative model, where the declarative model allows definition of applications and services within groups, definition of topology units in groups and a mapping between the application and service groups and topology groups. Processing of this model, embodied in XML, involves automatically changing the application server configuration to reflect the association of applications and services to the topology units, enabling the application server to deploy applications and services to servers, clusters, and other elements upon boot-up of the components. The declarative model is designed for extensibility to provide an application server neutral paradigm, allowing automated targeting or scoping of applications and services to topology units supported by a given application server.
Further details of aspects, objects, and advantages of the invention are described below in the detailed description, drawings, and claims. Both the foregoing general description and the following detailed description are exemplary and explanatory, and are not intended to be limiting as to the scope of the invention.